#include "escena.h"

Escena::Escena()
{

}

Escena::~Escena()
{
}


void Escena::destruir()
{
    foreach (Dibujo* dibujo, listaDibujos) {
        delete dibujo;
    }

    foreach (Foco* luz, listaLuces) {
        delete luz;
    }
    limpiar();
}

void Escena::limpiar()
{
    listaDibujos.clear();
    listaLuces.clear();
}

void Escena::agregar(Foco* luz)
{
    listaLuces.append(luz);
}

void Escena::agregar(Dibujo* dibujo)
{
    listaDibujos.append(dibujo);
}

void Escena::agregar(const QList<Dibujo*>& dibujos)
{
    listaDibujos.append(dibujos);
}

void Escena::agregar(Textura* textura)
{
    listaTexturas.append(textura);
}

void Escena::agregar(const QList<Textura*>& texturas)
{
    listaTexturas.append(texturas);
}

void Escena::inicializar(QGLWidget* glWidget)
{
    foreach (Textura* textura, listaTexturas) {
        textura->inicializar(glWidget);
    }

    if (!listaLuces.isEmpty()) {
        glEnable(GL_LIGHTING);
    }

    foreach (Foco* luz, listaLuces) {
        luz->inicializar();
    }
}

void Escena::dibujar()
{
    foreach (Foco* luz, listaLuces) {
        luz->aplicar();
    }

    foreach (Dibujo* dibujo, listaDibujos) {
        dibujo->dibujar();
    }
}
